using UnityEngine; using System.Collections.Generic; public class YahyaMinecraft : MonoBehaviour { GameObject player; float speed = 6f; List blocks = new List(); GameObject dog, cat; bool dogFed = false; Vector2 joystick; Rect joyArea = new Rect(20, Screen.height - 250, 200, 200); void Start() { // 1. إنشاء اللاعب player = GameObject.CreatePrimitive(PrimitiveType.Capsule); player.transform.position = new Vector3(0, 1, 0); player.name = "Yahya"; player.GetComponent().material.color = Color.blue; // إضافة Rigidbody للاعب لكي يتفاعل مع البلوكات المتساقطة Rigidbody prb = player.AddComponent(); prb.constraints = RigidbodyConstraints.FreezeRotation; // منع اللاعب من السقوط على وجهه prb.mass = 5; // اللاعب أثقل قليلاً ليدفع البلوكات // 2. الأرض GameObject ground = GameObject.CreatePrimitive(PrimitiveType.Plane); ground.transform.localScale = new Vector3(10, 1, 10); ground.GetComponent().material.color = new Color(0.3f, 0.7f, 0.3f); // 3. الحيوانات dog = CreateAnimal(new Vector3(3, 0.5f, 3), Color.yellow, "Dog"); cat = CreateAnimal(new Vector3(-3, 0.5f, 3), Color.magenta, "Cat"); // 4. بيت جاهز (ثابت بدون فيزياء لكي لا ينهار) BuildHouse(new Vector3(5, 0, -5)); LoadGame(); } void Update() { if (player != null) { MovePlayer(); UpdateCamera(); } } void UpdateCamera() { if (Camera.main != null) { Vector3 offset = new Vector3(0, 10, -8); Camera.main.transform.position = player.transform.position + offset; Camera.main.transform.LookAt(player.transform.position); } } void MovePlayer() { Vector3 move = new Vector3(joystick.x, 0, joystick.y); if (move.magnitude > 0.1f) { player.transform.Translate(move * speed * Time.deltaTime, Space.World); Quaternion targetRotation = Quaternion.LookRotation(move); player.transform.rotation = Quaternion.Slerp(player.transform.rotation, targetRotation, 10f * Time.deltaTime); } } // 🧱 بناء بلوك مع فيزياء (معدل) void BuildBlock() { // البناء يتم في مكان أعلى قليلاً ليشاهد اللاعب البلوك يسقط Vector3 pos = player.transform.position + player.transform.forward * 2f + Vector3.up * 3f; GameObject block = GameObject.CreatePrimitive(PrimitiveType.Cube); block.transform.position = pos; block.GetComponent().material.color = new Color(0.6f, 0.3f, 0); // 🔥 إضافة الفيزياء للبلوك 🔥 Rigidbody rb = block.AddComponent(); rb.mass = 1f; // وزن البلوك blocks.Add(block); } void FeedDog() { if (dog != null && Vector3.Distance(player.transform.position, dog.transform.position) < 3f) { dogFed = true; dog.GetComponent().material.color = Color.green; } } void BuildHouse(Vector3 start) { for (int x = 0; x < 3; x++) { for (int z = 0; z < 3; z++) { if (x == 1 && z == 1) continue; // البلوكات هنا ثابتة (بدون Rigidbody) CreateStaticBlock(start + new Vector3(x, 0, z)); } } CreateStaticBlock(start + new Vector3(1, 1, 1)); } // دالة خاصة لإنشاء بلوكات البيت الثابتة GameObject CreateStaticBlock(Vector3 pos) { GameObject b = GameObject.CreatePrimitive(PrimitiveType.Cube); b.transform.position = pos + Vector3.up * 0.5f; return b; } GameObject CreateAnimal(Vector3 pos, Color c, string name) { GameObject a = GameObject.CreatePrimitive(PrimitiveType.Cube); a.transform.position = pos; a.transform.localScale = new Vector3(0.8f, 0.8f, 0.8f); a.GetComponent().material.color = c; a.name = name; return a; } void SaveGame() { PlayerPrefs.SetFloat("px", player.transform.position.x); PlayerPrefs.SetFloat("pz", player.transform.position.z); PlayerPrefs.Save(); } void LoadGame() { if (PlayerPrefs.HasKey("px")) { Vector3 loadedPos = new Vector3(PlayerPrefs.GetFloat("px"), 1, PlayerPrefs.GetFloat("pz")); player.transform.position = loadedPos; } } void OnGUI() { GUI.Box(joyArea, "Joystick"); if (Event.current.type == EventType.MouseDrag || Event.current.type == EventType.MouseDown) { if (joyArea.Contains(Event.current.mousePosition)) { Vector2 center = joyArea.center; joystick = (Event.current.mousePosition - center) / (joyArea.width / 2); joystick = Vector2.ClampMagnitude(joystick, 1f); } } else if (Event.current.type == EventType.MouseUp) { joystick = Vector2.zero; } GUIStyle btnStyle = new GUIStyle(GUI.skin.button); btnStyle.fontSize = 20; // زر البناء if (GUI.Button(new Rect(Screen.width - 150, Screen.height - 100, 130, 60), "Build 🧱", btnStyle)) BuildBlock(); // زر الإطعام if (GUI.Button(new Rect(Screen.width - 150, Screen.height - 180, 130, 60), "Feed 🍖", btnStyle)) FeedDog(); // زر الحفظ if (GUI.Button(new Rect(20, 20, 100, 50), "Save 💾", btnStyle)) SaveGame(); } } My Page